package qc.module.ehs.api.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import qc.common.core.exception.QCPromptException;
import qc.module.ehs.dto.taskcategory.TaskCategoryDto;
import qc.module.ehs.dto.taskcategory.TaskCategoryQueryConditionDto;
import qc.module.ehs.service.EhsTaskCategoryService;

import java.util.List;

/**
 * TaskCategoryController
 *
 * @author QuCheng Tech
 * @create 2024/9/25
 */
@RestController
@RequestMapping("/taskcat")
public class TaskCategoryController {
    
    @Autowired
    private EhsTaskCategoryService service;

    /**
     * 获取所有
     * 获取指定组织编码下的所有任务分类
     * 
     * @param id 组织代码
     * @return List<TaskCategoryDto>
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @GetMapping("/all")
    public List<TaskCategoryDto> getAllByParam(@RequestParam String id){
        return service.getAll(id);
    }

    /**
     * 获取所有
     * 获取指定组织编码下的所有任务分类
     *
     * @param id 组织代码
     * @return List<TaskCategoryDto>
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @GetMapping("/all/{id}")
    public List<TaskCategoryDto> getAllByPath(@PathVariable String id){
        return service.getAll(id);
    }

    /**
     * 获取指定
     * 
     * @param id 分类代码
     * @return TaskCategoryDto
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @GetMapping("/get")
    public TaskCategoryDto getByParam(@RequestParam String id){
        return service.get(id);
    }

    /**
     * 获取指定
     *
     * @param id 分类代码
     * @return TaskCategoryDto
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @GetMapping("/get/{id}")
    public TaskCategoryDto getByPath(@PathVariable String id){
        return service.get(id);
    }

    /**
     * 新增
     *
     * @param dto 任务分类信息
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @RequestMapping(value = "/add",method = {RequestMethod.POST})
    public String add(@RequestBody TaskCategoryDto dto){
        return service.add(dto);
    }

    /**
     * 修改
     *
     * @param dto 任务分类信息
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @RequestMapping(value = "update",method = {RequestMethod.POST,RequestMethod.PUT})
    public String update(@RequestBody TaskCategoryDto dto){
        return service.update(dto);
    }

    /**
     * 删除
     *
     * @param id 任务分类代码
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @DeleteMapping("/delete")
    public String deleteByParam(@RequestParam String id){
        return service.delete(id);
    }

    /**
     * 删除
     *
     * @param id 任务分类代码
     * @return 成功返回null，失败返回错误或提示信息
     * @author QuCheng Tech
     * @since 2024/9/25
     */
    @DeleteMapping("/delete/{id}")
    public String deleteByPath(@PathVariable String id) {
        return service.delete(id);
    }

    /**
     * 查询
     *
     * @param dto 任务分类查询条件
     * @return 任务分类集合
     * @author QuCheng Tech
     * @since 2024/10/23
     */
    @RequestMapping(value = "/query", method = {RequestMethod.GET, RequestMethod.POST})
    public List<TaskCategoryDto> query(@RequestBody TaskCategoryQueryConditionDto dto) throws QCPromptException {
        return service.query(dto);
    }
}
